package com.example.leetcode.c901_end.c1299;
/**
 * 给你一个数组 arr ，请你将每个元素用它右边最大的元素替换，如果是最后一个元素，用 -1 替换。
 *
 * 完成所有替换操作后，请你返回这个数组。
 *
 * 示例：
 *
 * 输入：arr = [17,18,5,4,6,1]
 * 输出：[18,6,6,6,1,-1]
 *  
 *
 * 提示：
 *
 * 1 <= arr.length <= 10^4
 * 1 <= arr[i] <= 10^5
 *
 * 来源：力扣（LeetCode）
 * 链接：https://leetcode-cn.com/problems/replace-elements-with-greatest-element-on-right-side
 * 著作权归领扣网络所有。商业转载请联系官方授权，非商业转载请注明出处。
 */

import java.util.Arrays;

/**
 * @author zhanpengguo
 * @date 2020-07-28 15:19
 */
public class Solution {
    public int[] replaceElements(int[] arr) {
        for (int i = 0; i < arr.length; i++) {
            int max = -1;
            for (int j = i + 1; j < arr.length; j++) {
                if (arr[j] > max) {
                    max = arr[j];
                }
            }
            arr[i] = max;
        }
        return arr;
    }

    public int[] good(int[] arr) {
        int[] res = new int[arr.length];
        if (res.length <= 1) {
            return res;
        }
        res[arr.length -1] = -1;
        for (int i = arr.length -2 ; i >= 0; i--) {
            int max = Math.max(res[i + 1], arr[i + 1]);
            res[i] = max;
        }
        return res;
    }

    public static void main(String[] args) {
        int[] arr = new int[]{17,18,5,4,6,1};
        System.out.println(Arrays.toString(new Solution().good(arr)));
    }
}
